/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util.components;

import javax.swing.JFormattedTextField;
import util.GestorComponenteVista;

/**TextField que formatea la entrada a Integer.
 *
 * @author Raul
 */
public class IntegerTextField extends JFormattedTextField{
    
    /*Por defecto se muestra el punto que separa miles
     *Por ejemplo si se ingresa 1234 despues del commit sera 1.234
     */
    public IntegerTextField() {
        javax.swing.text.NumberFormatter nf =
                new javax.swing.text.NumberFormatter(java.text.NumberFormat.getIntegerInstance());
        nf.setValueClass(Integer.class);
        setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(nf));
        addKeyListener(GestorComponenteVista.crearNumeroKeyListener());
    }
    
    /*Se mostrara el punto que separa miles solamente si "agruparMiles" es true
     * 
     */
    public IntegerTextField(boolean agruparMiles) {
        this();
        setAgruparMiles(agruparMiles);
    }

    public boolean getAgruparMiles() {
        return ((java.text.NumberFormat)((javax.swing.text.NumberFormatter)this.getFormatter()).getFormat())
                .isGroupingUsed();
    }

    final public void setAgruparMiles(boolean agruparMiles) {
        if (getAgruparMiles() != agruparMiles) 
            separarMilesConPuntos(agruparMiles);
    }

    private void separarMilesConPuntos(boolean agruparMiles){
        ((java.text.NumberFormat)((javax.swing.text.NumberFormatter)this.getFormatter()).getFormat())
                .setGroupingUsed(agruparMiles);
    }

    @Override
    public Integer getValue() {
        final Integer valor = (Integer) super.getValue();
        return valor != null? valor : -1 ;
    }

    @Override
    public void setText(String t) {
        if (!t.equals("-1"))
            super.setText(t);
    }
    
    @Override
    public String getText() {
        return !super.getText().equals("")? super.getText() : "-1";
    }

}

